package main

import (
	"errors"
	"fmt"
)

func test() {
	//使用defer+recover来捕获和处理异常
	defer func() {
		//err := recover() //recover()内置函数，可以捕获异常
		//if err != nil {  //说明捕获到的错误
		//	fmt.Println("err=", err)
		//	//处理异常信息
		//}
		//这个写法和上面的写法一样
		if err := recover(); err != nil {
			fmt.Println("err=", err)
			//处理异常信息
		}
	}()
	num1 := 10
	num2 := 0
	res := num1 / num2
	fmt.Println("res=", res)
}

//函数去读取以配置文件init.conf的信息
//如果文件名传入不正确，我们就返回一个自定义的错误
func readConf(name string) (err error) {
	if name == "init.conf" {
		//读取
		return nil
	} else {
		//返回一个自定义的错误
		return errors.New("读取文件错误。。")
	}
}

func test02() {
	err := readConf("init.conf")
	if err != nil {
		//如果读取文件发送错误，就输出这个错误，并终止程序
		panic(err)
	}
	fmt.Println("test02()继续运行。。。。。。。。")
}

func main() {

	//test()
	test02()
	fmt.Println("main()下面的代码。。。。")
}
